
// app.js 服务器入口文件
const express = require('express')
const createError = require('http-errors')
const session = require('express-session')
const passport = require('passport')
const router = require('./router')
// 验证用户的方法
const { verifyUser } = require('./authenticate')

const app = express()

// 配置使用session
app.use(session({
    secret: '12345-67890-09876-54321',
    resave: false,
    saveUninitialized: false,
    cookie: { secure: false, maxAge: 800000, httpOnly: false },
    name: 'session-id'
}))

// 解析post请求体
app.use(express.json())
app.use(express.urlencoded({ extended: true }))

//初始化passport
app.use(passport.initialize())
app.use(passport.session())

// 首页不需要控制，都能访问
app.get('/', (req, res) => {
    res.end('welcome to my homepage')
})

// 注册登录处理
app.use('/user', router)

// 限制路由
// 需要登录的页面加一个verifyUser的判断就能控制权限了，大大简化操作，不用再if else了。
app.get('/document', verifyUser, (req, res, next) => {
    res.end('登录后可见的内容')
})


// 错误处理
app.use((req, res, next) => {
    next(createError(404))
})
app.use((err, req, res, next) => {
    res.status(err.status || 500)
    res.end(err.toString())
})

app.listen(3000)